public const
    Stdin File
    native('__SysStdin')

public const
    Stdout File
    native('__SysStdout')

public const
    Stderr File
    native('__SysStderr')

public function
    Scanln { prompt String default('') } Observable[String] {
        if (prompt.Empty) {
            Stdin.ReadLine
        } else {
            \ await Stderr.WriteString(prompt),
            Stdin.ReadLine
        }
    }

public function variadic
    Println { items List[ToString] } Observable[None] {
        Stdout.WriteLine(items.Seq | map({ (item) => item.String }) | join(' '))
    }


